package com.yuqian.JavaSe.leetcode.easy;

/**
 * leetcode 简单题 将一个String字符反转输出
 * @author yuqian
 *
 */
public class ReverseString {

	/**
	 * 这个结果在leetcode上测试通过的花了3MS
	 * @param s
	 * @return
	 */
	 public static String reverseString(String s) {
	        if(s!=null&&!"".equals(s)){
	        	char[] sChars=  s.toCharArray();
	        	int length = sChars.length;
	        	char[] result = new char[length];
	        	for(int i=length;i>0;i--){
	        		result[length-i] = sChars[i-1];
	        	}
	        	return new String(result);
	        }
	        return s;
	    }
	 
	 /**
	  * 这个结果只花了2ms是优于上面的结果的
	  * 
	  * 两种方式比较 第2种只读n/2 然后将x和n-x兑换
	  * @param s
	  * @return
	  */
	 public String reverseStrings(String s) {
	        if (s == null) {
	            return null;
	        }
	        char[] arr = s.toCharArray();
	        int left=0, right=arr.length-1;
	        while(left<right){
	            char tmp=arr[left];
	            arr[left] = arr[right];
	            arr[right]=tmp;
	            left++;
	            right--;
	        }
	        
	        return new String(arr);
	    }
	 
	 public static void main(String[] args) {
		System.out.println(reverseString("abc"));
		System.out.println(reverseString("a"));
		System.out.println(reverseString(""));
		System.out.println(reverseString(null));
	}
}
